//数组初始化(库函数)
memset(初始化地址, 初始值, 初始化大小);
初始化地址:一般为数组首地址即数组名
初识值: 范围是0到127，因为memset是以字节为单位对数组进行赋值的，一个字节8位，所表达的值就是0到127
初始化大小: 初始化大小用一个整数表示，表示需要初始化多少字节，通常用sizeof(数组首地址)来获得需要初始化的大小





//优先级队列(#include<queue>)
priority_queue<int, vector<int>, greater<int> > 容器名;
priority_queue是不允许随机访问，只能访问队列首部的元素，也只能对首部元素进行出队.
int类型可以更改为其他类型包括自定义类型(自定义类型时需要在最后加入仿函数mycmp)
greater是大顶堆，即队首为最大值,less为小顶堆
默认定义为大顶堆: priority_queue<储存的类型> 容器名;
成员函数: 
    empty() 如果优先队列为空，则返回真 
    pop() 删除第一个元素 
    push() 加入一个元素 
    size() 返回优先队列中拥有的元素的个数 
    top() 返回优先队列中有最高优先级的元素 





//next_permutation函数(#include<algorithm>)全排列
一般与sort函数连用:
# include <iostream>
# include <algorithm>
using namespace std;
int main()
{
	int a[] = { 3,1,2 };
	sort(a, a + 3); //默认升序排列
	do {
		for (int i = 0; i < 3; i++) {
			cout << a[i] << " ";
		}
		cout << endl;
	} while (next_permutation(a, a + 3)); //第一个参数对应数组首，第二个参数对应数组尾
	return 0;
}

运行结果:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1


//结构体全排列需要自定义排列函数，另外多加一个参数(自定义的排列函数)
struct test{//结构体test 
	int val;
}; 

bool cmp(test t1,test t2){//自定义的排列 
	return t1.val<t2.val;
}

int main(){
	test t[4];//结构体数组 
	t[0].val=1;
	t[1].val=2;
	t[2].val=3;
	t[3].val=4;
	
	do{
		for(int i=0;i<4;i++)
        {
			cout<<t[i].val<<' ';        //打印排列 
		}
		cout<<endl;
	}while(next_permutation(t,t+4,cmp));//获取下一个排列 
} 








//to_string函数(#include<string.h>或者#include<cstring>)
to_string函数可以将数字常量转化为字符串
例如: 
int a = 10;
string str = to_string(a);  //str = "10"





//stoi函数(#include<cstring>)
stoi（字符串，起始位置，n进制（默认10进制））
例如：
string str = "100";
int x = stoi(str, 0, 2);    //将二进制100转化为十进制x




//lambda匿名函数
详见:https://blog.csdn.net/luoyayun361/article/details/123491439